模組一開始怎麼界定模組範圍是最困難的,最簡單的方式就是先盡可能切出最小介面,能不公開的就先都不要公開,等到有確定的需求後,再開出新的 API。
以小模組來說,模組最常見的建立方式就是新增一個 lib
資料夾,規劃一個 endpoint 點,例如:koa-router 模組為範例的話,endpoint 是 lib/router.js
。
你可以看到 koa-router
已經是一週下載量 20 萬次的模組,但它的 API 還是維持的非常簡潔。
koa-router: https://github.com/ZijianHe/koa-router
建構子
首先它提供了一個建構子,可以傳入指定的參數去覆蓋掉預設參數 (opts),如果不傳的話,就都使用預設參數。
new Router([opts])
在文件撰寫上
[]
通常代表可忽略的參數,可傳可不傳的意思。
instance 函式
instance 函式的意思是,使用它之前需要建立一個物件,例如:
const apiRouter = new Router()
router.get('/', (ctx, next) => {
ctx.body = 'Hello World!'
})
static 函式
static 函式則是不需要先建立物件,就可以直接使用,範例如下所示:
const url = Router.url('/users/:id', { id: 1 })
// => "/users/1"
const url = Router.url('/users/:id', { id: 1 }, { query: { active: true } })
// => "/users/1?active=true"
new Router([opts])
instance
.get|put|post|patch|delete|del ⇒ Router
.routes ⇒ function
.use([path], middleware) ⇒ Router
.prefix(prefix) ⇒ Router
.allowedMethods([options]) ⇒ function
.redirect(source, destination, [code]) ⇒ Router
.route(name) ⇒ Layer | false
.url(name, params, [options]) ⇒ String | Error
.param(param, middleware) ⇒ Router
static
.url(path, params) ⇒ String